package com.kuizii.base.aspect;


import com.kuizii.base.annotaion.AuditLog;
import com.kuizii.base.config.AuditLogConfigProperties;
import com.kuizii.base.domain.BaseResponse;
import com.kuizii.base.domain.OptStatus;
import com.kuizii.base.util.IpUtil;
import com.kuizii.base.util.log.ILogWriter;
import com.kuizii.base.util.log.LogEntity;
import org.apache.commons.lang.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;


public interface IAuditLogHandler {
    Object processResult = null;
    Object[] args = new Object[0];
     default void setProcessResult(Object processResult) {
        processResult = processResult;
    }

    default void setArgs(Object[] args) {
        args = args;
    }

    String getUserName();

    String getUserCode();

    String getToken();


    String getApplicationId();

    String getApplicationName();
}
